/**
 * 
 */
package com.pe.pgn.clubpgn.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.pe.pgn.clubpgn.domain.ClpbClientePersona;
import com.pe.pgn.clubpgn.domain.ClpbPrograma;
import com.pe.pgn.clubpgn.domain.ClpdMeta;
import com.pe.pgn.clubpgn.domain.ClpmHistorialLiquidacion;
import com.pe.pgn.clubpgn.domain.ClpmLiquidacion;
import com.pe.pgn.clubpgn.domain.ClprPeriodoLiquidacion;
import com.pe.pgn.clubpgn.domain.ClprPeriodoPrograma;
import com.pe.pgn.clubpgn.domain.beans.BNPeriodo;
import com.pe.pgn.clubpgn.domain.beans.BNReporteLiquidacion;
import com.pe.pgn.clubpgn.domain.beans.BNResumenLiquidacion;

/**
 * @author Edwin Farfan
 *
 */
public interface ReporteLiquidacionDao {

public List<Map<String, Object>> listaReporteLiquidacion();
	
	public List<BNReporteLiquidacion> listReporteLiquidacionConFiltros(ClprPeriodoPrograma periodo, String idPrograma);
	
	public List<ClpdMeta> listaMetas(String idPrograma);
	
	public void generarLiquidacion(List<BNReporteLiquidacion> liquidaciones, String idPrograma,String idPeriodo);
	
	public Map<String, Object> generarLiquidacionSP(Long idPrograma,Long idPeriodo);
	

	public List<BNPeriodo> periodosPorPrograma(Long IdPrograma, Long idPeriodo, boolean itemDefault);
	
	public BNResumenLiquidacion generarResumenLiquidacion(BigDecimal coPeriodoLiquidacion);
	
	public ClprPeriodoPrograma findClprPeriodoPrograma(Long id);
	
	public ClpbClientePersona findClpbClientePersona(Long id);
	
	public List<ClprPeriodoLiquidacion> findPeriodoLiquidacionsByProgramaAndPeriodoPrograma(ClpbPrograma programa, ClprPeriodoPrograma periodoPrograma);
	
	public List<ClpmLiquidacion> findLiquidacionByPeriodoLiquidacionAndCliente(ClpbClientePersona cliente,ClprPeriodoLiquidacion periodoLiquidacion);
	
	public List<ClpmHistorialLiquidacion> findHistorialLiquidacionByPeriodoLiquidacionAndCliente(ClpbClientePersona cliente,ClprPeriodoLiquidacion periodoLiquidacion);
	
	public ClpbPrograma findClpbPrograma(Long id);
	
	public List<BNReporteLiquidacion> consultarLiquidaciones(ClpbPrograma idPrograma, ClprPeriodoPrograma idPeriodo);
	
	public List<ClpbPrograma> listadoProgramasHistoricos();
	
	public List<BNPeriodo> periodosPorProgramaHistorio(Long idPrograma);
	
	public List<Map<String, Object>> obtenerRegistrosLiquidacionPorPeriodo(BigDecimal coPrograma, BigDecimal coPeriodoPrograma);
	public List<BNPeriodo> periodosPorHistorioLiquidacion(Long idPrograma);

	public int verificarExistePeriodoLiq(Long idPrograma, Long idPeriodo);
}
